<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
<script type="text/javascript">
	var a = 3
	function fn(){
		var a = 6
		function fn2(){
			return a
		}
		return fn2
	}

	console.log(fn()()) //6

	/*
		闭包函数：上面这个fn2就是闭包函数，简单理解：可以读取其他函数内部的变量的函数
		如果一个函数访问了他的父级或者父级以上的作用域变量，这个函数也叫闭包函数

		作用：
			1.可以访问函数内部的变量
			2.可以让函数内部的变量保存在内存中  不会轻易被垃圾回收机制回调掉
		
	*/

	var a = 9
	function fnn(){
		c = 0
		return function(b){
			return b + c++
		}
	}

	var f = fnn()
	/*
		f = function(b){
			return b +a++
		}
	
	*/
	//每次都会递增，因为函数内部的变量存到内存里，不会被回收掉
	console.log(f(5))//5
	console.log(f(5))//6
	console.log(f(5))//7
	console.log(f(5))//8
	console.log(f(5))//9
</script>
</body>
</html>